package ee.metadataUtils;

import java.util.Collection;
import java.util.Map;

import ee.metadataUtils.impl.AdapterNotFoundException;

public interface PropertyMetadataRegistry {
	public Collection<PropertyMetadata> getPropertyMetadataCollection(Class<?> type);
	public Map<String, PropertyMetadata> getPropertyMetadataMap(Class<?> type);
	public PropertyMetadata getPropertyMetadata(Class<?> type, String propertyName);

	public <T> Collection<T> getPropertyMetadataCollection(Class<?> type, Class<T> adapterType) throws AdapterNotFoundException;
	public <T> Map<String, T> getPropertyMetadataMap(Class<?> type, Class<T> adapterType) throws AdapterNotFoundException;
	public <T> T getPropertyMetadata(Class<?> type, String propertyName, Class<T> adapterType) throws AdapterNotFoundException;
	
}
